package com.xiaoshuidi.cloud.module.bpm.service.message;

import com.xiaoshuidi.cloud.module.bpm.service.message.dto.*;

import javax.validation.Valid;

/**
 * BPM 消息 Service 接口
 *
 * TODO 芋艿：未来支持消息的可配置；不同的流程，在什么场景下，需要发送什么消息，消息的内容是什么；
 *
 * @author
 */
public interface BpmMessageService {

    /**
     * 发送流程实例被通过的消息
     *
     * @param reqDTO 发送信息
     */
    void sendMessageWhenProcessInstanceApprove(@Valid BpmMessageSendWhenProcessInstanceApproveReqDTO reqDTO);

    /**
     * 发送流程实例被不通过的消息
     *
     * @param reqDTO 发送信息
     */
    void sendMessageWhenProcessInstanceReject(@Valid BpmMessageSendWhenProcessInstanceRejectReqDTO reqDTO);

    /**
     * 发送任务被分配的消息
     *
     * @param reqDTO 发送信息
     */
    void sendMessageWhenTaskAssigned(@Valid BpmMessageSendWhenTaskCreatedReqDTO reqDTO);

    /**
     * 创建预约工单时发送信息提醒门店
     * @param createReserveTicketReqDTO
     */
    void sendMessageWhenCreateReserveTicket(MessageWhenCreateReserveTicketReqDTO createReserveTicketReqDTO);

    /**
     * 预约工单发送信息
     * @param reserveTicketReqDTO
     */
    void sendMessageWhenReserveTicket(MessageWhenReserveTicketReqDTO reserveTicketReqDTO);

    /**
     * 服务工单保洁和其他时通知信息
     * @param reserveTicketReqDTO
     */
    void sendMessageWhenSwoTicket(MessageWhenSwoTicketReqDTO reserveTicketReqDTO);

    /**
     * 维修工单信息-受理提醒
     * @param reserveTicketReqDTO
     */
    void sendMessageWhenSwoTicketRemind(MessageWhenSwoTicketRemindReqDTO reserveTicketReqDTO);

}
